<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>


    <script>

        // 递归函数：函数自己调用自己

        // function fn() {
        //     console.log(666) ;
        //     fn() ;
        // }

        // fn() ;


        // 函数在调用的时候，会在内存中开一个执行空间，函数执行完毕之后，这个执行空间会被释放掉
        // fn()    
        //    666
        //    fn()
        //       666
        //       fn()


        // 死递归：函数无法被释放，函数内部又不断的在调用函数，也就是不断的开辟内存空间  空间不足  超出内存  报错



        // 死循环：是浏览器'累死了'    浏览器崩溃了


        // 循环和递归都属于重复的做一件事情

        // 循环需要结束的条件，递归也需要出口



        // 

        // 打印n个666
        function f(n) {
            if(n === 0) {
                return ;
            }
            console.log(666) ;
            n-- ;
            f(n) ;
        }

        f(3) ;

    
        // f(3)    666      f3这个函数没有结束    执行完毕了
        // f(2)    666      f2这个函数没有结束    执行完毕了
        // f(1)    666      f1这个函数没有结束    执行完毕了
        // f(0)    执行完毕



        // 递归：传递与回归的意思


        // 






    </script>
    
</body>
</html>